Content Recommendation System

ABSTRACT

A social network content recommendation system allows users to identify friends, recommend content to friends, and receive awards for influencing friends. Internet pages can be used to display rankings of recommended programs, user profiles and their awards, and dynamic chats relating to specific programs, such as television shows.

CROSS REFERENCE TO RELATED CASES

This application is a continuation of and claims priority to U.S.application Ser. No. 13/106,483, filed May 12, 2011, which claimspriority to U.S. Provisional Application No. 61/347,302, filed May 21,2010, and entitled “Content Recommendation System,” the contents of eachapplication are hereby incorporated by reference.

BACKGROUND

Watching television has traditionally been a fairly private experience,with viewers tending to watch their own programs in their own homes.Newspaper schedules, television commercials, and electronic programguides have helped viewers find programs of interest, but there alwaysremains for better ways to engage viewers, and to provide them with anoptimal content experience. Features described herein may help withkeeping viewers (or listeners, in the case of musical content) engaged.

BRIEF SUMMARY

Various features described herein may be used to provide a socialnetwork content recommendation system. The system can maintaining, by acomputing device, a content recommendation system Internet page;receive, via the Internet page, an indication that a first user isconsuming an identified piece of content; identify friends of the firstuser; transmit messages to the friends, informing them that the firstuser is consuming the piece of content; receive responses from thefriends, indicating that the other users are also consuming the piece ofcontent; and reward the first user based on the responses from thefriends.

The system can provide a user profile page for the first user, whereinthe user profile page for the first user includes a graphical badgeidentifying the reward received by the first user. It can store awardprofile information, identifying video content recommendation criteriaand corresponding awards to be granted to users whose programrecommendations satisfy the criteria.

In some embodiments, credit for a particular recommendation can bedivided among a plurality of recommending users. The recommendationcredit can be allocated and adjusted based on a variety of factors. Forexample, adjusting can include adjusting recommendation credit for arecommending user based on a determination of whether the recommendinguser is still consuming the recommended content when the responding userresponded, determining a time window during which a recommender willreceive credit for a recommendation, and/or determining a time remainingin a piece of content at a time at a time that a recommender sends arecommendation and using the time remaining to identify a time ofexpiration for the recommender's time window

Adjusting credit can include giving different amounts of recommendationcredit to recommenders who used a direct message to send arecommendation to the responding user, and recommenders who used amulticast message to send a recommendation to the responding user, orgiving different amounts of recommendation credit to recommenders basedon their respective geographic proximity to the responding user, orassigning a recommendation ranking level to each user, and wherein theadjusting further comprises adjusting recommendation credit based on therecommender's recommendation ranking level.

Users can be assigned a recommendation ranking level based on howinfluential that user is over the user's friends, and recommendationcredit can be allocated based on this recommendation level.

The system may also offer an Internet display page with a trending panellisting content ranked based on the number of users accessing thecontent, and animating the trending panel to dynamically rearrange thelisting as the rankings are updated. The ranked content can include avariety of different types, such as scheduled television programs andInternet videos.

This summary is only a summary Other features are discussed furtherbelow.

DESCRIPTION OF THE DRAWINGS

Some features herein are illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements.

FIG. 1 illustrates an example communication network on which variousfeatures described herein may be implemented.

FIG. 2 illustrates an example computing device on which various featuresdescribed herein may be implemented.

FIGS. 3A-F illustrate various example recommendation system processes.

FIG. 4 illustrates an example login screen for a content recommendationsystem.

FIGS. 5A & B illustrate example main screens for a contentrecommendation system.

FIG. 6 illustrates an example program information screen for a contentrecommendation system.

FIGS. 7A-B illustrate example user profile screens for a contentrecommendation system.

FIG. 8 illustrates an example autofill feature for a contentrecommendation system.

FIG. 9 illustrates an example user profile screen with an awardnotification for a content recommendation system.

FIG. 10 illustrates an example attribution process for a contentrecommendation system.

DETAILED DESCRIPTION

In some embodiments, herein, an online profile system may be created tokeep track of individual users of content (e.g., viewers of videocontent, listeners of music content, etc.). The profile system may beimplemented using one or more computer servers connected to one or moreinformation networks, such as the Internet, and may be accessed by usersthrough any desired connection. For example, users may use a personalcomputer, mobile phone, netbook, home gateway device, set-top box,digital video recorder, remote control, etc. to access the one or moreprofile servers, and to access the underlying content (e.g., televisionprograms, movies, music, Internet content, etc.). The profile server andthe content accessing devices may be implemented using any desiredcomputing hardware, which may include one or more processors and one ormore computer-readable media (e.g., memories, RAM, Flash, hard drive,optical disk, etc.) storing computer-executable instructions that, whenexecuted by the processor, cause the devices described herein to performas described.

FIG. 1 illustrates an example information distribution network 100 onwhich many of the various features described herein may be implemented.Network 100 may be any type of information distribution network, such assatellite, telephone, cellular, wireless, etc. One example may be anoptical fiber network, a coaxial cable network or a hybrid fiber/coaxdistribution network. Such networks 100 use a series of interconnectedcommunication lines 101 (e.g., coaxial cables, optical fibers, wireless,etc.) to connect multiple premises 102 (e.g., businesses, homes,consumer dwellings, etc.) to a central office 103. The central office103 may transmit downstream information signals onto the lines 101, andeach home 102 may have a receiver used to receive and process thosesignals.

There may be one line 101 originating from the central office 103, andit may be split a number of times to distribute the signal to varioushomes 102 in the vicinity (which may be many miles) of the centraloffice 103. The lines 101 may include components not illustrated, suchas splitters, filters, amplifiers, etc. to help convey the signalclearly, but in general each split introduces a bit of signaldegradation. Portions of the lines 101 may also be implemented withfiber-optic cable, while other portions may be implemented with coaxialcable, other lines, or wireless communication paths. By running fiberoptic cable along some portions, for example, signal degradation inthose portions may be significantly minimized, allowing a single centraloffice 103 to reach even farther with its network of lines 101 thanbefore.

The central office 103 may include a modem termination system (MTS) 104,such as a cable modem termination system (CMTS), which may be acomputing device configured to manage communications between devices onthe network of lines 101 and backend devices such as servers 105-107 (tobe discussed further below). The MTS may be as specified in a standard,such as the Data Over Cable Service Interface Specification (DOCSIS)standard, published by Cable Television Laboratories, Inc. (a.k.a.CableLabs), or it may be a similar or modified device instead. The MTSmay be configured to place data on one or more downstream frequencies tobe received by modems at the various homes 102, and to receive upstreamcommunications from those modems on one or more upstream frequencies.The central office 103 may also include one or more network interfaces108, which can permit the central office 103 to communicate with variousother external networks 109. These networks 109 may include, forexample, networks of Internet devices, telephone networks, cellulartelephone networks, fiber optic networks, local wireless networks (e.g.,WiMAX), satellite networks, and any other desired network, and theinterface 108 may include the corresponding circuitry needed tocommunicate on the network 109, and to other devices on the network suchas a cellular telephone network and its corresponding cell phones.

As noted above, the central office 103 may include a variety of servers105-107 that may be configured to perform various functions. Forexample, the central office 103 may include a push notification server105. The push notification server 105 may generate push notifications todeliver data and/or commands to the various homes 102 in the network (ormore specifically, to the devices in the homes 102 that are configuredto detect such notifications). The central office 103 may also include acontent server 106. The content server 106 may be one or more computingdevices that are configured to provide content to users in the homes.This content may be, for example, video on demand movies, televisionprograms, songs, text listings, etc. The content server 106 may includesoftware to validate user identities and entitlements, locate andretrieve requested content, encrypt the content, and initiate delivery(e.g., streaming) of the content to the requesting user and/or device.

The central office 103 may also include one or more application servers107. An application server 107 may be a computing device configured tooffer any desired service, and may run various languages and operatingsystems (e.g., servlets and JSP pages running on Tomcat/MySQL, OSX, BSD,Ubuntu, Redhat, HTML5, JavaScript, AJAX and COMET). For example, anapplication server may be responsible for collecting television programlistings information and generating a data download for electronicprogram guide listings. Another application server may be responsiblefor monitoring user viewing habits and collecting that information foruse in selecting advertisements. Another application server may beresponsible for formatting and inserting advertisements in a videostream being transmitted to the homes 102. And as will be discussed ingreater detail below, another application server may be responsible forreceiving user remote control commands, and processing them to providean intelligent remote control experience. An application server 107 canbe programmed to provide the various content recommendation systemfeatures described herein, and can be used to implement a profile serveras described below.

An example home 102 a may include a modem 110, which may includetransmitters and receivers used to communicate on the lines 101 and withthe central office 103. The modem 110 may be, for example, a coaxialcable modem (for coaxial cable lines 101), a fiber interface node (forfiber optic lines 101), or any other desired modem device. The modem 110may be connected to, or be a part of, a gateway interface device 111.The gateway interface device 111 may be a computing device thatcommunicates with the modem 110 to allow one or more other devices inthe home to communicate with the central office 103 and other devicesbeyond the central office. The gateway 111 may be a set-top box (STB),digital video recorder (DVR), computer server, or any other desiredcomputing device. The gateway 111 may also include (not shown) localnetwork interfaces to provide communication signals to devices in thehome, such as televisions 112, additional STBs 113, personal computers114, laptop computers 115, wireless devices 116 (wireless laptops andnetbooks, mobile phones, mobile televisions, personal digital assistants(PDA), etc.), and any other desired devices. Examples of the localnetwork interfaces include Multimedia Over Coax Alliance (MoCA)interfaces, Ethernet interfaces, universal serial bus (USB) interfaces,wireless interfaces (e.g., IEEE 802.11), Bluetooth interfaces, andothers.

FIG. 2 illustrates general hardware elements that can be used toimplement any of the various computing devices discussed above. Thecomputing device 200 may include one or more processors 201, which mayexecute instructions of a computer program to perform any of thefeatures described herein. The instructions may be stored in any type ofcomputer-readable medium or memory, to configure the operation of theprocessor 201. For example, instructions may be stored in a read-onlymemory (ROM) 202, random access memory (RAM) 203, removable media 204,such as a Universal Serial Bus (USB) drive, compact disk (CD) or digitalversatile disk (DVD), floppy disk drive, or any other desired electronicstorage medium. Instructions may also be stored in an attached (orinternal) hard drive 205. The computing device 200 may include one ormore output devices, such as a display 206 (or an external television),and may include one or more output device controllers 207, such as avideo processor. There may also be one or more user input devices 208,such as a remote control, keyboard, mouse, touch screen, microphone,etc. The computing device 200 may also include one or more networkinterfaces, such as input/output circuits 209 (such as a network card)to communicate with an external network 210. The network interface maybe a wired interface, wireless interface, or a combination of the two.In some embodiments, the interface 209 may include a modem (e.g., acable modem), and network 210 may include the communication lines 101discussed above, the external network 109, an in-home network, aprovider's wireless, coaxial, fiber, or hybrid fiber/coaxialdistribution system (e.g., a DOCSIS network), or any other desirednetwork.

FIGS. 3A-3F illustrate example steps that can be performed by anapplication server 107 to support a content recommendation system. Theserver 107 may perform this process by executing computer-executablesoftware instructions stored in an internal memory, such as RAM 203. Theapplication server 107 may expose its services to users in any desiredmanner For example, an Internet page may be provided to allow users toaccess the content recommendation system. FIG. 4 illustrates an exampleInternet page 400. The page 400 may include one or more options 401(e.g., selectable button) for signing in.

In step 301, the system may determine whether a new user has selected anoption 401 to sign in from, for example, an Internet page offering thesystem. If a new user has made such a request, then the system mayproceed to step 302, and collect information from the new user throughan Internet screen. The system may receive a user identification (e.g.,an alphanumeric name, an email address, a device identifier such as aMedia Access Control address, etc.), and may generate a passwordassociated therewith.

In step 303, the system may ask the user to identify one or moreadditional accounts that may be linked with the one being created. Theother accounts may be any desired account with any different service.For example, the user may have accounts with different social networkingInternet sites, such as PLAXO™, FACEBOOK™ and TWITTER™. In step 303, theuser can be asked (e.g., via web page prompt) to enter information foreach additional account. The entered information may include an Internetaddress for the account (e.g., a Universal Resource Locator), anidentifier for the user (e.g., an alphanumeric name), and a password.Upon receipt of this information, the system may store (e.g., in a userprofile, discussed further below) information identifying theseadditional sites and/or accounts as being associated and linked with theuser.

In addition to identifying social networking accounts, the user may alsoidentify one or more content access accounts. For example, a particularuser may be a member of one or more video streaming services (e.g.,FANCAST XFINITY TV™, HULU™, NETFLIX™, etc.), and in step 303 the usercan provide user identification and password information for thoseaccounts as well. As will be described below, in some embodiments, theuser may use the current system to transmit program listings andrecommendations to external servers.

In step 304, the system may ask the new user to add contact informationfor the new user's friends. If the user's linked accounts alreadyinclude contact lists or friends, the recommendation system can transmita request to servers for the user's linked accounts, requesting alisting of the new user's friends on those linked accounts. The requestmay include authorization information from the new user (e.g., the newuser's password and identifier for the linked account), and the linkedaccount server may respond by transmitting a listing of the user'scontacts or friends. If no linked accounts exist, the user can simplyenter contact information. For example, the system may ask the user toenter email addresses for one or more friends, and may store thoseaddresses in the user's profile. The system may initially transmit amessage to the email address, asking the recipient to confirm that theyare an acquaintance of the new user.

In step 305, the system may allow the user to establish preferences. Forexample, the user could be allowed to set a preference indicating howwidely (e.g., which friends, public dissemination, etc.) or how long(e.g., duration in time) the new user's television viewing postings(discussed below) will be disseminated.

In step 306, the system may create and store a user profile for the newuser. The profile may be a data file stored, for example, in thesystem's hard drive memory 205. The profile may store any desiredinformation regarding the new user. This information may include thefollowing:

User ID and password—as noted above, this information can be used toidentify and authenticate the user to the system. Similar identificationinformation can be stored for any other linked accounts that the newuser identifies in step 303.

Friends List—the profile may store a listing of email addresses andidentifiers of the new user's friends. This may be limited to a list ofthe friends who have confirmed the new user as a friend.

Preferences—as noted in step 305, the system may store additional dataidentifying various preferences for the new user.

Award Status information—As will be discussed further below, users ofthe content recommendation system may be given various awards relatingto their accessing and/or recommending of content. A wide range ofawards may be used. For example, a user may be granted point values forvarious activities, and the profile may store a record of the user'scurrent point total. The point totals may be associated withpredetermined ranks in the system as well (e.g., 100 points is Rank 2,500 points is Rank 3, etc.).

Other awards may be granted for more specific accomplishments, and maybe defined by the system. For example, the system may grant a “Comedian”award to users who view a predetermined number (e.g., 10) of comedymovies. Other awards may be granted for a user who recommends a highnumber of programs, or who accepts a predetermined number of others'recommendations or types of recommendations. Various awards arediscussed further below, and the profile in step 306 may storeinformation identifying awards that the user has received. In additionto identifications of the actual awards that a user has received, theaward information may also identify the user's progress towards awardsthat have not yet been received. So, for example, if the user has onlywatched 3 comedy movies, the profile may identify this total for thecorresponding “Comedian” award.

The user's profile may also store a listing of content that the user haspreviously accessed. This can include, for example, a listing of thetime, title (or other program identifier) and service (e.g., station ornetwork offering a television program) for various television shows thatthe user has watched.

When the system is finished signing up the new user (or users), or if nonew user requests are received in step 301, the system may proceed tostep 307, and determine whether a user is requesting to sign in. Thissign-in request can also be made, for example, by the user requesting anInternet page 400, or by choosing a sign-in option 401, while browsingthe Internet on a computer 114 and watching television 112.Alternatively, the user can be viewing a streaming video on the samecomputer 114 that is used to access the content recommendation systemInternet site.

If a user has requested to sign in, then the system can authenticate theuser in step 308 by, for example, requesting that the user enter a UserID and Password, and comparing the information with that in the profilefor that User ID. Assuming the user is authenticated, the system in step309 may retrieve additional data from the user's profile, and in step310 the system may generate the user's initial display. The initialdisplay may include a default Internet screen and, if desired,advertising. FIG. 5A illustrates an example screen 500, and the defaultportions may include the top portion of the display, borders,backgrounds, etc. Once generated, the initial display may be retained inmemory pending update (discussed below), or it may be transmitted to theuser to allow partial display before the update.

In step 311, the system may then conduct a looping process to update thedisplayed information for each user who is signed in. Referring to theFIG. 5A example, the displayed information on the screen 500 may includea text box 501 in which the user may enter the title of content they arecurrently watching/listening to/consuming, and the result would beposted 502 as part of the user's current status in an online profile.FIG. 5B illustrates an example in which the user's information 502 isupdated to indicate he is watching “Mad Men.” The profile status may bebroadcast to other users, such as identified friends of the first user.FIG. 5B illustrates an example broadcast option 505 to transmit thestatus as an update to one or more external social networking sites.Text box entry may be performed in step 312, and may follow the exampleprocess shown in FIG. 3C discussed below.

The screen may include a trending panel 503, which may displayinformation identifying content that is most popular among the user'sfriends. The trending panel 503 may contain an animated, dynamic ladderlisting of the most popular content, such as the example describedfurther below. The popularity can be determined, for example, based onthe number of friends who are accessing the content at a given timeperiod (e.g., right now, within the last day or week, etc.). As thepopularity changes (e.g., as more friends watch a listed show, orfriends stop watching a show), the ladder listing can dynamically changeto show a rearranging of the listed content. The trending panel 503 maybe updated in step 313 for each user, and an example process for this isshown in FIG. 3D, discussed further below.

The screen 500 may also include a chat stream 504, which allows users toengage in live chats with their friends regarding the various pieces ofcontent that they are accessing. For example, different friends may postmessages about the show highlighted in the trending panel 503, and themessages may automatically include the content title in the posting. Themessages may appear each time a user's friend recommends a show, posts acomment about a show, accesses content, or otherwise takes actioninvolving the profile server. For example, the chat stream can serve asa news feed, posting updates whenever a status update has occurred witha friend. Recommendations and posts from friends can serve to influencea user's content habits, as discussed further below. Messages may alsobe posted whenever a friend indicates that they are accessing content(e.g., if they indicate that they are watching an episode of “Lost,” achat message may appear indicating this fact). Updating this chat stream504 for the various users may occur in step 314, using the example flowin FIG. 3E (discussed further below).

Other information not appearing on the example screen 500 may be updatedas well. For example, in step 315, the system may update user awards. Asnoted above, the recommendation system may track user activities, andmay define various awards that can be granted to users whose activitiesmeet the requirements for the particular award. FIG. 3F, discussedfurther below, provides an example for tracking and updating userawards.

After the user's main screen 500 information has been updated, thesystem can proceed with other types of services. For example, in step316, the system may determine whether a user has requested to view adifferent screen, such as information for a particular program.Selecting the particular program can be as simple as viewing an onscreenprogram guide (e.g., provided by gateway 111 on television 112, on acomputer 114, etc.), and selecting one with a mouse click.

If a user has chosen to view information for a piece of content, thesystem may generate 317 a display 600 shown in FIG. 6, which illustratesan example display in which a particular program has been selected (a“Cupcake Cannon” Internet video available for streaming). The display600 may offer the content itself 601, but may also provide differentinformation. For example, the display may offer an option 602 ofindicating that the user is also currently watching this selectedcontent (or that the user has decided to watch the content in responseto a recommendation). In response to selecting this option 602, thesystem may process a comment similar to that described further belowregarding FIG. 3C. The user may also be provided with a listing 603 ofother friends who are watching the selected program (data for which canbe gathered as described regarding FIG. 3C), and a program discussionpanel 604 containing posts and comments about the selected program. Theprogram discussion panel 604 may be focused on the currently-selectedprogram, and the screen 600 may also include the same chat stream panel504 from screen 500, which would allow the user to participate in a moregeneral chat conversation in parallel with the program-specific one.

The user may also be given an option to send a request to an externalaccount, such as a registered FANCAST XFINITY TV™ account, to have theselected program automatically recorded to the user's DVR. For example,an “Add to DVR” button 605 may, when pressed, cause the system totransmit an external message to a server previously identified in step303. The external message may include, for example, an identification ofthe selected program (e.g., a program identifier, title, etc.), andauthorization information to identify and authenticate the user with anexternal server (e.g., an application server 107 handling the user'saccount) that can, in turn, transmit a command to cause the user's DVRto record the selected program when it is available. For example, anapplication server 107 handling the user's DVR account may offer anInternet-based option to set the user's DVR recordings, and the externalcommand may cause the server to use this option to search for theselected program in the server 107's own offerings (e.g., finding atime/channel/service where the ‘Cupcake Cannon’ program is available onthe external service by searching its program guide listings) and issuea DVR recording command An external DVR service is described above, butother services can be used as well. For example, if the user has anaccount with an external content streaming service, selecting the option605 may cause the service's server to add the selected program to an ondemand playlist associated with the user.

As another option, in step 318, the system may determine whether a userhas requested to display profile information for a user (either the sameuser or a different one). If the user has requested to display a profileinformation screen, the system may retrieve the profile from storage instep 319, and generate the various displays for the screen in step 320.FIG. 7 illustrates an example user profile screen 700, which may displaya variety of information about a particular user. Biographicalinformation 701 may be displayed, illustrating the user's name, aprofile picture, and the user's recommendation level (as will bedescribed further below regarding FIG. 3C).

The user's profile may identify one or more content items 702 that theuser has watched the most, awards 703 that the user has received, andfollowers 704 that the user has. As noted above, a user may offer chatposts regarding programs, and those posts may convince the friends toalso watch the same program. Awards may be granted to the user forconvincing the friends to watch, and those awards (represented bygraphical icons, badges, or text) may be displayed in the awards 703portion of the user's profile. The awards may be interactive. A friendviewing the profile of a user can hover a mouse pointer over the award'sicon to see a short hover text description of the awards (e.g., “Awardedfor Watching 5 Comedies”). Clicking on the award could open a pop-updisplay with even more information, such as a description of how theidentified user actually received the award (“John Smith received thisaward for watching 5 episodes of ‘Seinfeld’”), a leaderboard listingshowing how quickly or efficiently other users have received the award(from the friend's list, the requesting user's friends list, across-section of the two, or from a local or global listing that listsaward recipients based on their geographic location), identifications ofadditional rewards that come with the award (e.g., coupons or discountsthat are granted with the award), or other information regarding theaward. Further interaction, such as clicking the title of a program inthe description, may lead the friend to a video on demand option toaccess the same content that the user watched.

The user can also choose to send a dedicated message to one or morefriends, specifically recommending a particular piece of content tothose friends. As a result of these recommendations, a user may developa following of friends who appreciate the user's recommendations. Forexample, the profile server may maintain a listing of followers for eachuser, and may add a friend to the listing if the friend requests to beadded, or if the friend accepts the user's recommendations more than acertain amount of times (e.g., once, twice, ten times, etc.).

After step 318 or step 320, the process may return to step 301 and beginthe loop again. The process described is merely illustrative, so thevarious steps can be rearranged, combined, omitted and modified to suitany desired embodiment. For example, some of the processes can be brokenup into multiple processes running concurrently on multiple applicationservers 107 or as parallel process threads.

FIG. 3C illustrates an example process of handling a user'srecommendations. As illustrated in FIG. 5, a user may use a textbox 501to identify a piece of content that the user is consuming (e.g., atelevision show that the user is watching) in step 350. The textbox 501may accept text input, as noted above, but it can alternatively acceptother types of input. For example, as a user begins typing a title, thetextbox 501 may display a pulldown listing of possible programs havingtitles that match the entered characters. FIG. 8 illustrates an exampleof such an autofill, with pulldown listing 801. Another alternative maybe to display Internet links for content, if the content is availablevia Internet streaming. So, for example, the content title may be a URL(Universal Resource Locator) address. Alternatively, a user could choosean “I'm Watching Too” option 602 after viewing a program informationscreen 600 from a program guide, or after selecting it from the chatpost or recommendation message of another user.

In step 351, the system may update the user's profile information fileto indicate that the user is now consuming the identified content (e.g.,the user's file may be edited to indicate that the user is now watchingthe television show “Mad Men”). The edited profile will allow therecommendation system to subsequently use the updated profileinformation when updating other aspects of the system, such as theinformation displayed to others (e.g., the live stream 504 may indicatethat the user is now watching “Mad Men”), or information displayed intrending panels (FIG. 3D) and chat windows (FIG. 3E). In addition toediting the user's profile, the system may also edit a profilemaintained for the content itself. For example, the system may monitorhow often users systemwide view the “Mad Men” program, and thisinformation may be maintained in a content profile along with the userprofiles. Updating the profile in step 351 can also include updatingother internal databases as well. For example, if the user beganwatching a program based on the recommendation of another user, then thesystem can track the viewing history of the user (e.g., note that theuser chose the “I'm Watching Too” button 602, and identifying the otheruser whose post/message/recommendation led to this user's selection),and record that information as well for award purposes.

External systems may also be notified of the update. For example, theuser may have linked various accounts in step 303 to the recommendationsystem. If those linked accounts are external to the recommendationsystem, and do not have access to the recommendation system's owndatabases, then the recommendation system may transmit a notification tothe external system. So, for example, if the system determines in step352 that the user has linked his/her account to an external Internetsite, such as FACEBOOK™, then the system can transmit a message to acorresponding server for the FACEBOOK™ application (e.g., sending anemail or push notification to a server identified by the user in thelinking process) in step 353. The external message may identify the userand the content being accessed, as well as any other desiredinformation. External messages may also be sent at the direction of theuser, who can indicate that a particular comment should be posted to adifferent server or account.

These notifications, internal and external, may serve as a user'srecommendations to others. As will be discussed below, the recipients ofthese recommendations will have the opportunity to respond to therecommendation by following the recommendation (e.g., indicating thatthe recipient is also watching), responding with chat comments, or anyother desired response. Such responses can lead to awards for therecommender. For example, a user may receive a point each time theycause a friend to watch a show or post a comment about it.

FIG. 3D illustrates an example process of updating the trending panels503 displayed to users. In step 360, the system may determine the timeframe parameters for the trending panel. The time frame parameters maydefine the time range to be used when generating the listing in thetrending panel. For example, the user may choose options of “This Week”,“Today” and “Right Now”. Choosing “This Week” would result in the systemcollecting content accessing information for the current week (e.g.,collecting information identifying the television programs that werewatched by various users in the current week, or the past 7 days).Similarly, the “Today” option would result in collecting information forthe content accessed on the current date, while the “Right Now” optionwould result in collecting information identifying content that iscurrently still being consumed or accessed.

In step 361, the system can determine the user participation parameterfor the trending panel. The user participation parameter may indicatethe group of individuals to be used for the information collected. Forexample, the user can choose “Friends”, which would result in the systemcollecting information about the user's friends' viewing habits duringthe desired time period (e.g., television programs my friends watchedover the last week). Other groups of users may be used as well, such asfamily, or a group having all registered users of the recommendationservice, social clubs, book clubs, groups affiliated with businesses,etc.

Once the trending panel parameters have been determined, the system canthen retrieve information identifying the content that was accessed bythe users in the determined group over the determined time frame.Gathering this information may involve retrieving it from a programprofile and/or user profiles stored at the system's application server107. This step may also include tabulations or calculations. Forexample, the system may need to generate totals indicating the number ofviewers who watched a particular television show in the set time frame,and then sort those totals into a list, having the most viewed programsat the top. Another calculation may involve determining how many usersare currently accessing the content (if the time frame is “Right Now”).For example, the system may calculate a total of the number of activestreams that are streaming a particular piece of Internet content; orthe system can compare the start/end times of scheduled broadcastcontent (e.g., the 11 o'clock nightly news) with the current time andtimes of recommendations to determine if identified programs arecurrently being watched by their respective users. For example, if auser is watching and recommends a 30-minute program at 8 pm, thenhis/her recommendation may expire at 8:30, for purposes of tabulatingthe trending listings.

This example describes calculating the totals as part of the FIG. 3Dprocess, but in some embodiments the totals may be dynamically updatedas new users enter recommendations. Indeed, the various sub-processesand steps described herein are merely illustrative, and can berearranged/modified as desired.

In some embodiments, the trending information can employ a trendingsocial velocity. A viral velocity may identify how quickly a particularprogram is spreading through various friends lists via recommendationsin a given time frame. For example, if the given time frame were 30minutes, then the system can track, for each program, how quickly thatprogram is being spread from friend to friend within that time frame. Ifa first user watches a program, and in the next 30 minutes there are 20friends who watch the program based on the first friend'srecommendation, and in the next 30 minutes there are 100 friendswatching it from the first friend's recommendation (either directly fromthe friend's recommendation, or indirectly via an intermediate friend),then the program's trending social velocity may be 5× (e.g., indicatinga five-fold growth in recommended viewings per 30-minute period). Thissocial velocity for a program may be used to help sort the contentslisted in the trending panel. For example, a program having a velocitygreater than a given threshold (e.g., 5×/30 minutes) may be deemed a“hot” program, and may be indicated as such in the trending panel withan additional logo. Multiple social velocity thresholds may be defined,and different responses can be programmed for different threshold. Forexample, a second threshold of 10× can be defined to indicate programsthat are “spreading like wildfire.” When a program has a velocity thatexceeds this second threshold, the system can transmit additionalmessaging, such as having the program identified on the main login page,or sending requests to push notification servers 105 to cause a pushnotification message to be sent to the user's smart phone, announcingthat a particular program is “spreading like wildfire” through theuser's friend list (or through friends lists in general, such as his/herfriends list, the friends' friends lists, etc.).

After step 362, the system may have a sorted list of content that hasbeen accessed within the determined time frame by the determined groupof users. This list may include a mixture of scheduled televisioncontent, premium video content, video on demand, Internet streamingcontent (e.g., posted videos from various Internet sites), etc. In step363, when the sorted list of content has been generated, the system maygenerate a display of the listing for a user to see. As part of thedisplay, the system can determine how the current list differs from thelast time the list was generated. Since the lists may be generatedrather frequently (e.g., the process in FIG. 3D could be performedcontinuously, or every few seconds, as desired in view of systemresources), the pieces of content in the list may largely remain thesame from one list to the next. When a piece of content moves to adifferent ranked position (e.g., an Internet video moves from the #2spot to the #8 spot), the system can use an animated display toillustrate the movement of the content in the ranked list. For example,the system can use an animation to show the listing for the contentleaving the #2 spot and sliding down the screen to the #8 spot.

Alternative embodiments may modify the trending panel described above.For example, the panel may be modified to display multiple animatedladders for multiple trends. A user could, for example, request to seeone trend ladder for his/her friends, and another trend ladder for adifferent group of individuals, such as a friend's friends, or users inthe same city, or all users registered with the profile server, etc. Onetrend could list content that the user has recommended to others, andranking them according to how popular those programs are, or accordingto how well-received his/her recommendations for those programs are(e.g., ranking by percentage of acceptances, or number of points awardedfor each recommendation). For example, if a user has recommended theprogram “Gilligan's Island,” the user can see a trend listing howwell-received that recommendation has been. FIG. 9, discussed furtherbelow, illustrates an example screen having multiple trending displays.

Another example trend can list individuals who are in a user-createdsubset. For example, the user could define a list of college alumni, orscientists, etc., and see a separate trend listing for the popularcontent among those groups.

An alternative trend may be a listing of items other than content. Forexample, the trend could list people or friends. The friends could besorted according to how influential they are, or according to howinfluential they have been to the user. For example, if a user hasaccepted more of Adam's recommendations and less of Bob's, then thetrend could list the friends with Adam higher than Bob, since Adam hasbeen more influential to the user. Similarly, the trend could rankfriends according to how often those friends have been influenced by theuser's own recommendations. As with the content trend, such a friend (orperson) trend can also be animated to dynamically display shiftingpositions as the ranking changes.

In addition to displaying listings from the trending panels, the systemcan also give the user the option to send the listings to an externaldestination, such as the external DVR service discussed above. The usercould be provided with an option to send a listing of some or all of thetrending programs to the external service, and the external service canact on the information to set the user's DVR to record the programs, addthe programs to an on demand playlist, or any other desired activity.For example, the user can request to have the top 3 programs in afriends group's trending panel identified to an external DVR service,and the system can transmit an external message to that service'sserver, identifying the programs and the user. The external message canalso serve as a recommendation to a different user of the externalservice, and can identify the user as the source of the recommendation.For example, a user can request to transmit the listing to a friend(e.g., on the same system or in an external server), and the listing canbe delivered to the appropriate server, identifying the sending user andthe friend. When that friend next logs into the service (e.g., to theirFANCAST XFINITY TV™ account, they may see a listing of recommendedprograms, and may be presented with a listing of programs recommended bythe user, along with an identification of the recommender (e.g., aprofile picture, a caption stating “Recommended for you by yourTunerfish friend John,” etc.).

FIG. 3E illustrates an example process of updating a chat window, suchas chat window 504. In step 370, the system can determine whether therehave been any new chat messages that have been received since the lasttime this step was performed. A new message may simply be one that hasarrived since the last time step 370 was performed. Alternatively, amessage may be “new” if it simply has not yet been displayed to theparticular user in question, or in the particular view being requested,and even if the message arrived prior to the last time step 370 wasperformed (e.g., it arrived but was not processed for display because itwas not needed for the particular display being viewed).

Chat messages can come from a variety of sources. For example, whenevera user makes an entry into text box 501, that entry can be flagged as achat message as well. So, for example, if the user were to enter “MadMen” as a show they were watching, a chat message of “John Smith iswatching Mad Men” may be generated by the system and stored as a newchat message in a memory of the recommendation system's applicationserver 107. A user can also enter chat messages directed to a particularprogram, such as that shown in the program discussion panel 604. Forexample, the user can view the profile page for a particular program,and choose “Join Discussion” to open a chat window allowing them toenter a text chat message. The system can store that message, along withan identification of the content (e.g., the program) to which themessage is directed.

Chat messages can also be a direct message come from other users. Forexample, the system can provide a user with the option to send a privatechat message to a friend chosen from the user's friend list.Alternatively, a user's accounts at external networking sites, such asFacebook and Twitter, may allow the user to send a chat message to aparticular user as well.

The system may store these messages, along with identifications of thesending user, the addressed user (if the message is directed tosomeone), time/date, source application (e.g., identifying therecommendation system, or an external Internet site, as the source ofthe message), and content to which the comment is directed (if any). So,in step 370, if new messages have been received, then the process maycontinue with step 371, in which the system may retrieve the newmessages and begin to process them for possible display. Step 371 maybegin a loop for each new message.

In step 372, the system may check to see if the message came from afriend of the user requesting the display. For example, the FIG. 3Eprocess may occur when the user chooses to view a profile page for the“Mad Men” television show. The system may have received numerouscomments from its various users about this program, and each message mayidentify the sender. In step 372, the system may compare thisidentification with the friends listed in the user's profile. If themessage is not from a friend, then the process can return to step 371 toprocess the next new message. If the message is from a friend, then theprocess may determine, in step 373, whether the user was viewing theprofile page for the content being discussed in the message, and if so,the message may be added 374 to the discussion panel 604 for that pieceof content. For example, if the message were directed to the “CupcakeCannon” Internet video, as illustrated in FIG. 6, then the message mayappear in the discussion panel 604 of the information screen 600 forthat piece of content, if the user happened to be viewing that screen600. However, if in step 373 the system determines that the user was notviewing the program information screen 600 for that piece of content,then the system can add the message to the live stream chat window 504instead. For example, if the viewer was not viewing the “Cupcake Cannon”screen 600, but was rather viewing the main screen 500, then the “I lovecupcakes” comment could be displayed in the live stream 504 instead.FIG. 5 illustrates an example, in which Nida Zada has commented on theCupcake Cannon content, but the user is viewing the main screen 500 (andnot the program-specific screen 600 for the “Cupcake Cannon” content).After processing the current new message, the system may return to step371, to process the next new message.

When the messages are posted, they may include selectable links. Forexample, a message indicating that a friend is watching “Cupcake Cannon”may allow the user to click on “Cupcake Cannon” in the message, and bebrought to the program information screen 600 for the “Cupcake Cannon”content. From there, the user can view an ongoing discussion 604 of theprogram, and still monitor other discussions in the general chat window504. The user may also see a listing 603 of other friends who are alsowatching the same content, and can choose the “I′m Watching Too” option602. Choosing such an option may be treated as if it were entered in thetext box 501 discussed above, and may serve as a recommendation.

As noted above, the recommendation system may monitor user activity, andgrant various awards and perks to users based on those activities.Monitoring the activities may involve simply keeping a running log ofevery action taken by a particular user. For example, each time the userviews a friend list, enters a program recommendation or comment, views amessage, views a user profile, accesses content, etc., the applicationserver 107 may store a data record of the activity in a memory 205.

FIG. 3F illustrates an example process of how that logged informationcan be processed to grant awards to users. In step 380, one or moreaward profiles may be retrieved from storage. An award profile may be adata file that identifies one or more awards, and the requirementsneeded to receive that award. For example, one award profile may grant auser an award for watching the “Caprica” television show five times. Theaward itself can be a simple graphical badge displayed with the user'sonline profile, or a textual title, or it can be monetized in somefashion, such as a discount on future purchases, monetary credit to avideo-on-demand account, etc. Example awards are discussed in greaterdetail below.

In step 381, the current user's profile may also be retrieved. Theuser's profile may contain a log of all of the user's activities, brokendown into whatever categories are desired. For example, the profilecould track the number of times a user has watched each uniquetelevision program, or the number of times a user has influenced anotheruser to choose the “I'm Watching Too” option 602.

In step 382, the system may begin a loop for each award. For each award,the system can determine 383 if the user has met the criteria for thataward (e.g., has the user watched “Mad Men” more than ten times?), andif so, the system can grant the award to the user in step 384. Grantingthe award can simply involve editing the user's profile to indicate thatthis award has been received. The next time that user's profile isdisplayed 320, the system can include this new award in the display(e.g., displaying an icon or graphical badge for the award). In someembodiments, a new award message can be displayed to the user. Forexample, FIG. 9 shows an alternative main screen 900, in which an awardmessage 901 is displayed. The award message may also include an option902 to allow the user to post a comment about the award, and an option903 to indicate where the user would like to comment to appear (e.g.,only on the recommendation system's screens generated for users, and/ortransmitted to external Internet sites for posting as well).

As noted above, the system can define a large variety of awards in theaward profile. Some awards may be based on a point system, with usersreceiving certain amounts of points for different activities. Forexample, the system may grant 5 points each time a user views aparticular television program, and 1 point each time a user's friendchooses the “I'm Watching Too” option 602 after viewing the user's ownposting about the show. When that friend chooses the “I'm Watching Too”option, the system may edit the user's profile to add that point value,in addition to (or instead of) logging the individual action (e.g., thespecific friend, the specific show, etc.). The system server may alsodefine point levels (e.g., a level every 100 points, a level every 500points, etc.), and a user's level may be displayed as part of his/herprofile 701. The level may indicate how influential the user happens tobe, and the award for being influential can include the credits ordiscounts (or other valuable consideration) mentioned above.

Other awards may be defined as well. For example, an award may bedefined for watching the same program 5 times, or for persuading 100friends to watch a program, or for posting 1000 comments, etc. Thefollowing lists examples of types of awards that can be defined andtracked:

Awards for consuming content. Some awards can reward passion ordedication to a show, and can be given to a user who watches a programfive times. For this award, the award profile may define the program (orseries) identifier, a threshold count, and the resulting award (e.g.,graphical badge, title, monetary discount, etc.).

Awards for consuming content in predetermined genres. Various pieces ofcontent may be categorized into genres (e.g., nature shows, realitytelevision, comedy, horror, etc.), and some awards can be defined torecognize a user who has consumed sufficient quantities of content in aparticular genre. For example, a “Survivalist” award may be granted tousers who watch 10 or more programs in the survivalist genre (e.g.,shows about human beings surviving in nature). The award can havemultiple levels, with different titles and badges granted for differentamounts of viewing (e.g., a different level and award for watching 25and 50 programs in the survivalist genre). Some embodiments may onlycount distinct content (e.g., not granting awards for watching reruns,or for only watching a single series within the genre).

Awards for other quirky or unexpected behavior. For example, an “EasterEgg” award can be defined to grant a badge if a user watches five kittenvideos in the same evening.

Site awards. Some awards can be define to encourage usage of variousfeatures of the recommendation system. For example, awards can bedefined for posting a recommendation, following another'srecommendation, influencing a certain number of friends, having acertain number of friends, etc.

Co-operative awards. Some awards can be defined to require participationby more than one user. For example, a specific recommendation award canrequire that a user successfully influence 10 friends to watch kittenvideos in one evening. A user who wishes to obtain that award maypublish number of kitten video recommendations in an evening, hopingenough friends help. The user may also post messages to the friends,informing them that he/she is pursuing an award, and asking theirassistance in obtaining it.

The various awards may include time limits, and activities occurringoutside of the time limits may be disregarded by the system whenprocessing the award.

The system may also employ metrics to keep track of what awards are moreeffective in encouraging certain behaviors. For example, the system maymonitor which awards are granted the most, when they are granted, whichawards tend to get discussed the most, etc.

The following lists various award profile parameters that may be used indefining and tracking an award:

Award Identifier Information—Name of award, graphical assets (e.g.,thumbnail images), hover text (description of the award to be displayedwhen a user hovers a mouse pointer over an award's name or icon), fulldescription of award requirements.

Various awards may be defined. For example, awards can be defined forprogram genres (e.g., comedies, action movies, linear broadcast dramas,on-demand sporting events, etc.). An award for a genre may includeinformation, at the server 107, identifying requirements for receivingthe award. For example, an award for recommending comedies may requirethat the user successfully recommend a program in the comedy genre apredetermined number of times (e.g., 5 users must choose the “I'mWatching Too” option in response to the first user's post recommendingthe comedy). Multiple sub-levels may be defined for an award as well.For example, the comedy genre award may have three levels, one attainedat 5 recommendations, one at 10 recommendations, and one at 25recommendations. Each award and/or level may include a unique graphicalbadge or icon appearing in the user's profile.

The award information can also define additional parameters, such as adate and/or time that the particular award can (or cannot) be earned.For example, an award may be defined for a particular linear broadcastdate and time (e.g., the season finale of a television series), andmight only be earned if recommendations are successful during that time(e.g., if a user successfully recommends a program within the originalair date and time of the season finale). Time ranges may also (oralternatively) be defined for an award.

Awards can be defined for specific programs. For example, an award maybe defined for a predetermined linear broadcast television series (e.g.,“Lost”), a move, an Internet program (e.g., The Guild), etc. Awards canbe defined based on comment text used when a user recommends a program(e.g., via the comment interface shown in FIG. 5B). For example, anaward's information can define one or more keywords or phrases that,when used to recommend a program, may result in credit towards receivingthat award. For example, the Showtime program “Weeds” may encourageusers to use positive language like the word “love” when recommendingthat program. A corresponding award's information may identify thekeyword or phrase, the program to which it applies (e.g., if the keywordaward is linked to predetermined programs), an identification of thenumber of times a user muse use the word to receive the award, and anidentification of what is received when the award is received (e.g., thebadge graphics, point credits, etc.). Another example award may involveusers guessing the culprit's identity in a murder mystery. The culprit'sname may be a keyword, and if a user enters a comment saying that nameas the culprit, the user may receive an award at the program'sconclusion.

Other awards may be defined for different types of content. For example,users may choose to recommend certain Internet pages or URL (UniversalResource Locators). The server 107 may store information identifying thenumber of times a user has successfully recommended URLs in general(e.g., regardless of the specific URL) or URL categories (e.g.,recommendations for certain domains, such as “www.youtube.com,”“www.vimeo.com, etc.”) and grant an award accordingly.

Awards can also be defined for different metadata surrounding programs.For example, a program's listing information may identify peopleinvolved in the show. Awards can be defined for these people. Forexample, the system can grant an award to a user for successfullyrecommending 5 programs starring a predetermined actor, or 5 programsdirected by a predetermined director.

The profile server may track the user's progress towards each of theseawards, and when a user reaches it, the profile server may add an awardlabel to the user's profile, and display the label in an awards portion604 of the profile. The server may also transmit a message to thegateway 111, consumption device, or any other device to cause a pop-upmessage to appear on the viewing screen (“You have just received the‘Comedian’ Award”); and the server may request that the push servertransmit a push notification to one or more push devices that theparticular user has registered. The combination of points, levels andawards may create a more dynamic and engaging consumption experience forusers. Additionally, perks and privileges may be granted to users whoreach certain predefined levels. For example, a user who reaches level10 may be entitled to a discount on their bill, or early access topreviously unreleased content (e.g., an opportunity to purchase avideo-on-demand movie a few days before the general population can), orany other desired benefit.

The awards may be defined by personnel, for example, at the profileserver. Alternatively, awards may be defined by users and customers, anduploaded to the profile server. For example, the profile server maydownload an application to the user's gateway 111 or content consumptiondevice 113, and the application may provide a user interface by which aviewing user can define an award. In some embodiments, the ability toupload an award may itself be part of an award, and reserved forrecommenders who have attained a predetermined recommendation level(e.g., recommenders may be required to successfully make 1,000recommendations before being allowed to upload their own awards).

One example of a user-generated award is a scavenger hunt. The usercreating this award may be permitted to peruse an electronic programguide and select a number of upcoming programs that will need to bewatched in order to receive the award. The user can tag individualepisodes (e.g., this Thursday's episode of “The Beverly Hillbillies”),or the user can specify a minimum number of episodes that must bewatched to receive the award (e.g., all 15 episodes of “CSI” that areairing this Thursday). The user can also identify multiple programs tobe in the scavenger hunt (e.g., identifying episodes from “The BeverlyHillbillies” and “CSI”). In some embodiments, listings of users'favorite shows, or the trending panel in FIG. 5B, may be selected as theprogram listing for a scavenger hunt.

In some embodiments, the scavenger hunt may require in-programinteraction on the part of the viewer. For example, the award generationapplication may identify one or more events that can occur in the show,and the award can require that viewers press a predefined button ontheir remote control when they observe the identified event occurring.For example, the event can be a character speaking a certain keyword,and viewers must press the “UP” button on their remote control wheneverthey hear a character say that word.

The predefined events may be defined with advertisers in mind, or byadvertisers. For example, the event may be the onscreen appearance ofcertain products, such as the appearance of a can of Red Stripe beer. Insome embodiments, the appearance can be tied to certain characters(e.g., only press the button when you see Nick drinking the Red Stripebeer). The various event identifiers can be provided along with (orapart from) the program content itself (e.g., identifying availableevents that have been flagged by the program provider, and allowing theaward-creating user to choose among them for their scavenger hunt).

In addition to defining the requirements for the award, the uploadinguser may also define rewards. For example, the user may upload or select(from a predetermined list supplied with the award creation application)a badge image and badge name for the award. The user may also choose areward other than the badge. For example, the program provider may offercoupons or discounts as available rewards, and the user creating thescavenger hunt may select a coupon or discount to include with the awardthat he/she is creating.

A user who wishes to participate in the scavenger hunt may select it(e.g., from another user's profile, or from an Internet listing ofavailable awards), and choose to have the required programs tagged ontheir own DVR for recording and/or watching. For example, the profileserver handling the award may receive the user's request, and transmit amessage (e.g., via EBIF messaging) to the user's gateway 111 or DVR 113to have the required listing of programs added to the user's recordinglist and/or reminder list.

With the features described above, users may influence the decisions oftheir friends, such as causing their friends to tune in to watch aparticular television show, or download an Internet video. Thisinfluence can be measured and used to encourage more user participation,and to provide flexibility in recommending programs.

In some instances, multiple users may recommend the same program, and inthose instances all of the recommending users may receive a point. Insome alternative embodiments, one or more attribution schemes can beused to limit the amount of points awarded to the recommenders, or todetermine who among them will receive the point(s) for influencing afriend. For example, if 100 members are all watching the show “30 Rock,”and a friend of theirs begins watching that show, the profile server mayimplement an attribution system to determine which subset of the 100actually get credit for influencing the friend. To determineattribution, the editing of a user's profile in step 351 can furtherinclude implementing an attribution scheme.

Various attribution schemes can be used to determine which user(s)receive credit for persuading a particular friend of theirs to accessrecommended content. FIG. 10 illustrates an example process ofattribution employing a variety of scheme factors. The process can beginwhen, in step 351, the system determines that attribution is needed. Forexample, attribution can be needed if the user who indicates they arewatching a particular show does so in response to another user's commentor recommendation, or by selecting the “I'm Watching Too” option 602after viewing a program's information screen 600 in response to anotheruser's comment.

In step 1001, the system can begin a loop for each of the possiblerecommenders (e.g., each commenter who recommended a show that a friendeventually chose to watch). In step 1002, the system may establish adefault recommendation credit score. The default score can be any value,such as one, and can be adjusted upwards or downwards depending on theattributions factors discussed below. The example of one is just that:an example. Other values can be used.

In step 1003, the system may determine if the recommender is stillwatching (or otherwise accessing) the recommended content when thefriend started watching (e.g., when the friend chooses the “I'm WatchingToo” option). For example, each recommendation or comment posted by auser can be associated, by the recommendation system server, with atime-to-live value based on the remaining duration of the content. Forexample, the time-to-live value can be the original duration of thecontent, such as an hour. In step 1003, the system can identify theoriginal posting time of the recommendation, the duration of the content(e.g., an hour), and if the current time is within the duration of thecontent (e.g., within an hour of the posting), then the process mayproceed to step 1004 to increase the recommender's recommendation creditscore on the assumption that the recommender is still watching the show(because it likely hasn't ended yet).

In some embodiments, instead of using the original entire duration ofthe content, the system can determine the recommender's current positionwithin the content at the time of the recommendation, and determine atime at which the recommender will no longer receive credit for arecommendation because the recommender's program will have ended. Forexample, if the recommender was halfway through a 30-minute program whenmaking the original recommendation, then the system can determine, instep 1003, that the recommender will only receive credit for followerswho join in within the second half of the program (or 15 minutes afterthe recommender's post).

The above example can be one example for on-demand content. In the caseof scheduled broadcast/multicast programs, the recommendation system canaccess the schedule and determine whether the program is still on. Forexample, if the recommender indicated that he/she is watching “Mad Men”during its original air time, and a subsequent user chooses to watch itlater on demand after the original airing has ended, the system candetermine in step 1003 that the recommender is no longer actuallywatching “Mad Men” since the show has ended.

This determination 1003 can also examine the recommender's own profile,to determine if that recommender has since indicated that he/she iswatching a different program. For example, if the user posts at 9 pmthat he/she is watching “Mad Men,” but then posts at 9:15 pm that he/sheis watching “Real Housewives,” then the system can determine that theuser is no longer watching “Mad Men” because that posting has beensuperseded. If the current user has chosen to watch “Mad Men” at 9:30pm, then the system can assume in step 1003 that the recommender is nolonger actually watching “Mad Men.”

Another attribution factor may depend on the manner in which the friendultimately chose to access the recommended content. For example, afriend could be led to a program by a user's profile information. Forexample, if a user has received an award for watching the same program 5times, and the friend views that user's profile, the friend could seethe award, and could click on it to see how the user received the award.The explanation for the award could be displayed on the friend's displayscreen, and can include a textual description of the award's criteria(e.g., “Watch 5 episodes of a comedy”) along with an identification ofhow the user received this particular award (“Bob watched 5 episodes of‘Seinfeld’”). Seeing this, the friend can click on the listing of“Seinfeld”, and request a video on demand stream session of the sameepisodes of “Seinfeld.” In this case, in step 1005, the system candetermine that the viewer accessed the content after viewing the user'sawards information in the user's profile, and the user could havehis/her attribution credit score raised a set amount in step 1006.

As another alternative, a user can directly send a message (e.g., anemail, or unicast post, etc.) to a friend, recommending a program, andthe receiving friend could respond to the message by agreeing to beginwatching the recommended program. In that event 1007, the user who sentthe message may receive more point(s) for the recommendation than otherfriends who may have also recommended the same program, and that user'sscore can be increased in step 1008 accordingly.

In some embodiments, point values for recommendations may be greaterwith recency 1009. For example, if two users recommended a program, butone recommended it more recently than the other, the more recentrecommender may receive more points for a friend who begins to accessthe recommended content.

In some embodiments, attribution can take into account geographiclocation 1010. For example, if the friend is using a mobile device toaccess content, and the mobile device is provided with locationinformation (e.g., having an on-board global positioning system, orreceiving an external signal informing it of its position), therecommendation server can use the location to adjust the point valuesgiven to different recommenders. For example, recommenders that aregeographically closer to certain locations, or closer to the influencedfriend, may receive higher point values than the more distantrecommenders. The geographic location can also be used to determine thetime-to-live or expiration time value for a recommendation. For example,the profile server may obtain the recommender's position, and thenconsult a database to determine what service providers are offeringservice to the recommender, and to obtain the program schedule for theservice provider, and thereby obtain the start/end time of a linearscheduled program.

In step 1011, a recommender's attribution score can be adjusted forhis/her level of authority in the content that was recommended. In someembodiments, the server may identify content that a given userrecommends, or content that the user receives a large number of pointsfor recommending, and deem that user to be an authoritative orinfluential person for that piece of content. For example, if anauthority threshold of 1000 points is used, and a given user receives1000 points for recommending the program “The Tudors,” then that usercan be deemed an influential person for “The Tudors.” Furtherrecommendations by that influential person for “The Tudors” may be worthan increased (or decreased) number of point values for the influentialperson, as compared to other recommenders. The example above identifiesindividuals who are influential for a given piece of content, but othertypes of influences can be tracked as well. For example, a user could bedeemed an authority on a content genre (e.g., science fiction steampunk)because he/she has received the most recommendation points for contentin that genre.

The example above begins with a baseline score and adjusts it upwards.In alternative embodiments, negative adjustments can be made to reducerecommenders' scores as well (e.g., instead of increasing onerecommender's score, it can simply decrease other recommenders' scores).Also, the individual adjustments in steps 1004, 1006 and 1008-1011 canbe weighted in any desired manner, to emphasize whichever aspect thesystem implementer wishes to emphasize. For example, if the systemimplementer wishes to encourage more use of direct messagerecommendations, the increase in step 1008 can be proportionally morethan the other increases. Similarly, some of the attribution factors canbe omitted if desired, and others can be used if desired.

In the discussion above, a viewer may voluntarily report their currentviewing by, for example, entering the program title of what they arecurrently watching. In some embodiments, this voluntary self-reportingby a user can be made using any desired device (e.g., via anInternet-connected computer different from a device used to view theprogram), and the system need not take any measures to independentlyconfirm whether the viewer truly is watching what they say they arewatching. In some embodiments, the system may perform a verificationprocess to make this confirmation. For example, an application server107 may associate a user with a particular gateway 111 and/or computer115 upon initial setup (e.g., linking a customer login on the interface501 with a gateway 111 address (e.g., its MAC address, or an address inthe network identifying the gateway 111's central office, port, etc.),and in response to a user reporting a viewing, the server may transmit arequest to the user's gateway 111 (or to a specific consumption device,such as computer 115) to request confirmation of the content currentlybeing rendered or displayed by the device. The gateway 111 orconsumption device may then respond by identifying the content it iscurrently displaying, and the application server 107 may then comparethe response with what the viewer entered to verify. If there is amatch, then the viewer is granted whatever award or credit is earned bythe viewing. If there is no match, then the award or credit can bewithheld pending further follow up with the user (e.g., a servicerepresentative email inquiry), or the award/credit can simply be deniedas being unverified.

The viewer's self-reporting may also be handled differently. Forexample, instead of having the user enter a title or program selectionvia the interface 501, the user's own gateway 111 or consumption devicemay transmit a message to the application server 107 to report on theviewing. In some alternative embodiments, the user may be using anInternet-based remote control for selecting the viewing (e.g., using anInternet application to choose a program and start playback on adifferent device), in which case an application server 107 handling theremote control request may already know what content is being streamedto the user (or the user's requesting device), and that server canreport (or provide upon request) identification of the user's viewing asneeded. Of course, privacy concerns may affect how these kinds ofautomated reporting are handled (e.g., a user may need to consent to thetransmission of viewing information).

Although example embodiments are described above, the various featuresand steps may be combined, divided, omitted, and/or augmented in anydesired manner, depending on the specific recommendation processdesired. The scope of this patent should only be defined by the claimsthat follow.

1. An apparatus comprising: one or more processors; and memory storinginstructions that, when executed by the one or more processors, causethe apparatus to: send, to a second user device, information comprising:an indication that a first user device is outputting a content item; anda recommendation, from the first user device, for the content item;determine a time remaining within the content item at a time of therecommendation; receive, from the second user device, an indication thatthe second user device is outputting, based on the recommendation, thecontent item; grant, based on determining that a time associated withthe indication that the second user device is outputting the contentitem is within the time remaining, a recommendation credit for a firstuser associated with the first user device; and store informationindicating the recommendation credit for the first user.
 2. Theapparatus of claim 1, wherein the instructions, when executed by the oneor more processors, cause the apparatus to: send, to the first userdevice for display, profile information indicating a level of influencethat the first user has over content consumers and a graphic identifyingan award received by the first user for influencing the contentconsumers to watch one or more content items.
 3. The apparatus of claim1, wherein the instructions, when executed by the one or moreprocessors, cause the apparatus to: store award profile informationindicating content recommendation criteria for granting a correspondingaward to a recommending user who recommends the content item, whereinthe content recommendation criteria comprises one or more of a quantityof recommendations made by the recommending user or a quantity of otherusers who viewed the recommended content item based on the recommendinguser's recommendation; and grant, based on the recommendation satisfyingthe content recommendation criteria, the corresponding award to thefirst user.
 4. The apparatus of claim 1, wherein the instructions, whenexecuted by the one or more processors, cause the apparatus to grant therecommendation credit for the first user by causing granting therecommendation credit for the first user further based on a geographicproximity of the first user to a second user associated with the seconduser device.
 5. The apparatus of claim 1, wherein the instructions, whenexecuted by the one or more processors, cause the apparatus to grant auser-defined award by causing processing a user-defined award profilethat identifies one or more user-defined awards and at least onecriterion for granting the one or more user-defined awards.
 6. Theapparatus of claim 5, wherein the at least one criterion indicates aplurality of programs to be viewed for the user-defined award to begranted.
 7. The apparatus of claim 1, wherein the instructions, whenexecuted by the one or more processors, cause the apparatus to: send, tothe first user device for display, a graphic identifying an awardreceived by the first user for influencing content consumers to watchone or more content items; receive, from a third user device, anindication that the third user device is outputting, based oninteracting with the graphic identifying an award received by the firstuser, one of the one or more content items associated with the award;grant, based on the indication that the third user device is outputtingthe one of the one or more content items, another recommendation creditfor the first user; and store information indicating the anotherrecommendation credit for the first user.
 8. The apparatus of claim 1,wherein the instructions, when executed by the one or more processors,cause the apparatus to: store award profile information indicatingcontent recommendation criteria for granting an award to a recommendinguser who recommends the content item, wherein the content recommendationcriteria comprises a quantity of other users who viewed the contentitem, based on the recommending user's recommendation, and within aspecified time range; and grant, based on the recommendation satisfyingthe content recommendation criteria, the award to the first user.
 9. Theapparatus of claim 1, wherein the instructions, when executed by the oneor more processors, cause the apparatus to: store award profileinformation indicating content recommendation criteria for granting anaward to a recommending user who recommends the content item, whereinthe content recommendation criteria comprises one or more keywordsincluded in one or more of data or metadata associated with the contentitem; and grant, based on the recommendation satisfying the contentrecommendation criteria, the award to the first user.
 10. The apparatusof claim 1, wherein the recommendation is by the first user.
 11. Theapparatus of claim 1, wherein the instructions, when executed by the oneor more processors, cause the apparatus to determine the time remainingwithin the content item at a time of the recommendation by causingdetermining the time remaining based on the information comprising therecommendation.
 12. The apparatus of claim 1, wherein the instructions,when executed by the one or more processors, cause the apparatus toreceive the indication that the second user device is outputting thecontent item by causing receiving an indication that the second userdevice is outputting, in response to the recommendation, the contentitem.
 13. The apparatus of claim 1, wherein the instructions, whenexecuted by the one or more processors, cause the apparatus to grant therecommendation credit for the first user by causing increasing therecommendation credit for the first user.
 14. A system comprising: acomputing device; and a second user device configured to output acontent item; wherein the computing device comprises: one or moreprocessors; and memory storing instructions that, when executed by theone or more processors, cause the computing device to: send, to thesecond user device, information comprising: an indication that a firstuser device is outputting the content item; and a recommendation, fromthe first user device, for the content item; determine a time remainingwithin the content item at a time of the recommendation; receive, fromthe second user device, an indication that the second user device isoutputting, based on the recommendation, the content item; grant, basedon determining that a time associated with the indication that thesecond user device is outputting the content item is within the timeremaining, a recommendation credit for a first user associated with thefirst user device; and store information indicating the recommendationcredit for the first user.
 15. The system of claim 14, wherein theinstructions, when executed by the one or more processors, cause thecomputing device to: send, to the first user device for display, profileinformation indicating a level of influence that the first user has overcontent consumers and a graphic identifying an award received by thefirst user for influencing the content consumers to watch one or morecontent items.
 16. The system of claim 14, wherein the instructions,when executed by the one or more processors, cause the computing deviceto: store award profile information indicating content recommendationcriteria for granting a corresponding award to a recommending user whorecommends the content item, wherein the content recommendation criteriacomprises one or more of a quantity of recommendations made by therecommending user or a quantity of other users who viewed therecommended content item based on the recommending user'srecommendation; and grant, based on the recommendation satisfying thecontent recommendation criteria, the corresponding award to the firstuser.
 17. The system of claim 14, wherein the instructions, whenexecuted by the one or more processors, cause the computing device togrant the recommendation credit for the first user by causing grantingthe recommendation credit for the first user further based on ageographic proximity of the first user to a second user associated withthe second user device.
 18. The system of claim 14, wherein theinstructions, when executed by the one or more processors, cause thecomputing device to grant a user-defined award by causing processing auser-defined award profile that identifies one or more user-definedawards and at least one criterion for granting the one or moreuser-defined awards.
 19. The system of claim 18, wherein the at leastone criterion indicates a plurality of programs to be viewed for theuser-defined award to be granted.
 20. The system of claim 14, whereinthe system further comprises a third user device, and wherein theinstructions, when executed by the one or more processors, cause thecomputing device to: send, to the first user device for display, agraphic identifying an award received by the first user for influencingcontent consumers to watch one or more content items; receive, from thethird user device, an indication that the third user device isoutputting, based on interacting with the graphic identifying an awardreceived by the first user, one of the one or more content itemsassociated with the award; grant, based on the indication that the thirduser device is outputting the one of the one or more content items,another recommendation credit for the first user; and store informationindicating the another recommendation credit for the first user.
 21. Thesystem of claim 14, wherein the instructions, when executed by the oneor more processors, cause the computing device to: store award profileinformation indicating content recommendation criteria for granting anaward to a recommending user who recommends the content item, whereinthe content recommendation criteria comprises a quantity of other userswho viewed the content item, based on the recommending user'srecommendation, and within a specified time range; and grant, based onthe recommendation satisfying the content recommendation criteria, theaward to the first user.
 22. The system of claim 14, wherein theinstructions, when executed by the one or more processors, cause thecomputing device to: store award profile information indicating contentrecommendation criteria for granting an award to a recommending user whorecommends the content item, wherein the content recommendation criteriacomprises one or more keywords included in one or more of data ormetadata associated with the content item; and grant, based on therecommendation satisfying the content recommendation criteria, the awardto the first user.
 23. The system of claim 14, wherein therecommendation is by the first user.
 24. The system of claim 14, whereinthe instructions, when executed by the one or more processors, cause thecomputing device to determine the time remaining by causing determiningthe time remaining based on the information comprising therecommendation.
 25. The system of claim 14, wherein the instructions,when executed by the one or more processors, cause the computing deviceto receive the indication that the second user device is outputting thecontent item by causing receiving an indication that the second userdevice is outputting, in response to the recommendation, the contentitem.
 26. The system of claim 14, wherein the instructions, whenexecuted by the one or more processors, cause the computing device togrant the recommendation credit for the first user by causing increasingthe recommendation credit for the first user.
 27. A non-transitorycomputer readable medium storing instructions that, when executed,cause: sending, to a second user device, information comprising: anindication that a first user device is outputting a content item; and arecommendation, from the first user device, for the content item;determining a time remaining within the content item at a time of therecommendation; receiving, from the second user device, an indicationthat the second user device is outputting, based on the recommendation,the content item; granting, based on determining that a time associatedwith the indication that the second user device is outputting thecontent item is within the time remaining, a recommendation credit for afirst user associated with the first user device; and storinginformation indicating the recommendation credit for the first user. 28.The non-transitory computer readable medium of claim 27, wherein theinstructions, when executed, cause: sending, to the first user devicefor display, profile information indicating a level of influence thatthe first user has over content consumers and a graphic identifying anaward received by the first user for influencing the content consumersto watch one or more content items.
 29. The non-transitory computerreadable medium of claim 27, wherein the instructions, when executed,cause: storing award profile information indicating contentrecommendation criteria for granting a corresponding award to arecommending user who recommends the content item, wherein the contentrecommendation criteria comprises one or more of a quantity ofrecommendations made by the recommending user or a quantity of otherusers who viewed the recommended content item based on the recommendinguser's recommendation; and granting, based on the recommendationsatisfying the content recommendation criteria, the corresponding awardto the first user.
 30. The non-transitory computer readable medium ofclaim 27, wherein the instructions, when executed, cause the grantingthe recommendation credit for the first user by causing granting therecommendation credit for the first user based on a geographic proximityof the first user to a second user associated with the second userdevice.
 31. The non-transitory computer readable medium of claim 27,wherein the instructions, when executed, cause granting a user-definedaward by causing processing a user-defined award profile that identifiesone or more user-defined awards and at least one criterion for grantingthe one or more user-defined awards.
 32. The non-transitory computerreadable medium of claim 31, wherein the at least one criterionindicates a plurality of programs to be viewed for the user-definedaward to be granted.
 33. The non-transitory computer readable medium ofclaim 27, wherein the instructions, when executed, cause: sending, tothe first user device for display, a graphic identifying an awardreceived by the first user for influencing content consumers to watchone or more content items; receiving, from a third user device, anindication that the third user device is outputting, based oninteracting with the graphic identifying an award received by the firstuser, one of the one or more content items associated with the award;granting, based on the indication that the third user device isoutputting the one of the one or more content items, anotherrecommendation credit for the first user; and storing informationindicating the another recommendation credit for the first user.
 34. Thenon-transitory computer readable medium of claim 27, wherein theinstructions, when executed, cause: storing award profile informationindicating content recommendation criteria for granting an award to arecommending user who recommends the content item, wherein the contentrecommendation criteria comprises a quantity of other users who viewedthe content item, based on the recommending user's recommendation, andwithin a specified time range; and granting, based on the recommendationsatisfying the content recommendation criteria, the award to the firstuser.
 35. The non-transitory computer readable medium of claim 27,wherein the instructions, when executed, cause: storing award profileinformation indicating content recommendation criteria for granting anaward to a recommending user who recommends the content item, whereinthe content recommendation criteria comprises one or more keywordsincluded in one or more of data or metadata associated with the contentitem; and granting, based on the recommendation satisfying the contentrecommendation criteria, the award to the first user.
 36. Thenon-transitory computer readable medium of claim 27, wherein therecommendation is by the first user.
 37. The non-transitory computerreadable medium of claim 27, wherein the instructions, when executed,cause the determining the time remaining by causing determining the timeremaining based on the information comprising the recommendation. 38.The non-transitory computer readable medium of claim 27, wherein theinstructions, when executed, cause the receiving the indication that thesecond user device is outputting the content item by causing receivingan indication that the second user device is outputting, in response tothe recommendation, the content item.
 39. The non-transitory computerreadable medium of claim 27, wherein the instructions, when executed,cause the granting the recommendation credit for the first user bycausing increasing the recommendation credit for the first user.